alimuzzy (Normal User)
Rookie
Messaggi: 28
Iscritto: 24/02/2009
|
Ciao a tutti.
Con gli array se utilizzo il metodo GetLowerBound riesco ad ottenere il valore piu piccolo di una serie di elementi all'interno dell'array.
Utilizzando un arraylist invece non essendo presente il metodo GetLowerBound e non riuscendo a trovare qualcosa di simile come faccio a ricavare il valore più piccolo?
Grazie
Ultima modifica effettuata da alimuzzy il 08/09/2010 alle 18:33 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da alimuzzy:
Il Min e Max sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie
Ps
sto cercando di risolvere il terzo problema del http://projecteuler.net/
|
Se sapessi l'inglese, caro mio, sapresti anche che Bound significa limite o confine. GetLowerBound e GetUpperBound servono a ottenere rispettivamente il limite inferiore e superiore dell'array, ossia l' indice minimo e quello massimo, come mostra questa pagina:
http://msdn.microsoft.com/en-us/library/system.array.getlo ...
Min e Max sono metodi dichiarati come estensioni dell'interfaccia IEnumerable(Of T), che è implementata da qualsiasi collezione tipizzata (quindi anche dagli array).
Per mostrarti la differenza abissale che c'è tra ArrayList e List, leggi questa introduzione ai generics:
http://totemslair.org/guide/viewchapter.php?guida=vb&id=41 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da a_butta:
Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...? |
nessuno di voi due ha capito nulla.
GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.
quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.
bastava guardare nell'intellisense per arrivarci, neanche cercare su google.... |
|
Ultimo (Member)
Guru
Messaggi: 880
Iscritto: 22/05/2010
|
Codice sorgente - presumibilmente VB.NET |
' Dichiaro la mia listabella. Dim Listabella As New List(Of Integer) ' Richiamo la Funzione Randomize. Randomize() ' Carico la mia listabella. For i as Int32 = 0 to 100 Step+1 Me.Listabella.Item(index:=i) = Int(Rnd() * 100) + 1 Next i ' Variabile di confronto. Dim Scan as int32 = 0 ' Variabile per il risultato finale Minimo. Dim Min as int32 = 0 ' Variabile per il risultato finale Massimo. Dim Max as int32 = 0 ' Ciclo la mia listabella. For j as Int32 = 0 to Me.Listabella.Count - 1 Step+1 Scan = Me.Listabella.Item(index:=j) If j = 0 Then Min = Me.Listabella.Item(index:=j) Max = Me.Listabella.Item(index:=j) End if If Scan < Min Then Min = Scan End if If Scan > Max Then Max = Scan End if Next j ' Visualizzo il risutato Minimo. Me.TextBoxMin.Text = Cstr(Min) ' Visualizzo il risutato Massimo. Me.TextBoxMax.Text = Cstr(Max)
|
Ultima modifica effettuata da Ultimo il 08/09/2010 alle 23:40
If ok Then GOTO Avanza else GOTO Inizia
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da HeDo:
nessuno di voi due ha capito nulla.
GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.
quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.
bastava guardare nell'intellisense per arrivarci, neanche cercare su google.... |
TuaCollezione.Min() = valore minimo (richiede vb2008+ e i riferimenti alle librerie linq correttamente importati). |
|
alimuzzy (Normal User)
Rookie
Messaggi: 28
Iscritto: 24/02/2009
|
Ok Totem in effetti mi sono espresso male non il valore ma il limite ok..
La spegazione sui generics colma chiaramente ciò che volevo sapere ottima spiegazione, dovrò solo studiarla anche se prima di quello sul tuo manuale ci sono altri capitoli da studiare..
|
|
alimuzzy (Normal User)
Rookie
Messaggi: 28
Iscritto: 24/02/2009
|
Il Min e Max sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie
Ps
sto cercando di risolvere il terzo problema del http://projecteuler.net/
|
|
a_butta (Member)
Expert
Messaggi: 578
Iscritto: 16/03/2010
|
Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...?
|
|